package com.zck.thumbup.constant;

/**
 * @author 赵承康
 * @date 2025/10/16
 */
/**
 * 用户模块常量定义
 */
public final class UserConstant {

    // ====================== 会话管理相关 ======================
    /**
     * 登录用户存储在Session中的属性名
     * 用法示例：request.getSession().setAttribute(UserConstant.LOGIN_USER_SESSION_KEY, user);
     */
    public static final String LOGIN_USER_SESSION_KEY = "loginUser";

    /**
     * 用户登录态Token的Cookie名称
     */
    public static final String LOGIN_TOKEN_COOKIE_NAME = "user_token";

    /**
     * 默认会话有效期（单位：秒）- 30分钟
     */
    public static final int DEFAULT_SESSION_TIMEOUT = 1800;

    // ====================== 权限相关 ======================
    /**
     * 管理员角色标识
     */
    public static final String ROLE_ADMIN = "admin";

    /**
     * 普通用户角色标识
     */
    public static final String ROLE_USER = "user";

    // ====================== 状态码相关 ======================
    /**
     * 用户未登录错误码
     */
    public static final int NOT_LOGIN_CODE = 401;

    /**
     * 用户无权限错误码
     */
    public static final int NO_PERMISSION_CODE = 403;

    // ====================== 默认值 ======================
    /**
     * 默认用户头像URL
     */
    public static final String DEFAULT_AVATAR = "https://default.avatar.url";

    // ====================== 缓存键前缀 ======================
    /**
     * 用户信息缓存前缀（格式：user:info:{userId}）
     */
    public static final String CACHE_USER_PREFIX = "user:info:";

    /**
     * 用户权限缓存前缀（格式：user:perm:{userId}）
     */
    public static final String CACHE_PERM_PREFIX = "user:perm:";

    private UserConstant() {
        throw new AssertionError("禁止实例化常量类");
    }
}
